#ifndef _HCC_ERROR_CODE_DRV_PER_MMC_H_
#define _HCC_ERROR_CODE_DRV_PER_MMC_H_

#include "ofc_types.h"
#include "hcc_error_code.h"
#include "hcc_error_code_drv.h"

#ifdef __cplusplus
extern "C" {
#endif

// 不含行号的错误码生成
#define HCC_MAKE_DRV_PER_MMC_ERROR(error_code) (int)HCC_MAKE_DRIVER_ERROR(kHccDrvPerMmc, error_code, HCC_ERROR_LEVEL_ERROR)
// 含行号的错误码生成
#define HCC_MAKE_DRV_PER_MMC_ERROR_LINE(error_code) (int)HCC_ERROR(HCC_MAKE_DRIVER_ERROR(kHccDrvPerMmc, error_code, HCC_ERROR_LEVEL_ERROR))


/**
 * 外设Mmc驱动:外设Mmc驱动
 */
enum THccDrvPerMmcTag
{
	kHccDrvPerMmcSuccess	=	HCC_ERROR_SUCCESS,			///< 成功,没有错误
	kHccDrvPerMmcComm	=	HCC_MAKE_DRV_PER_MMC_ERROR(0),			///<通讯错误
	kHccDrvPerMmcParam	=	HCC_MAKE_DRV_PER_MMC_ERROR(1),			///<参数错误
	kHccDrvPerMmcCallBack	=	HCC_MAKE_DRV_PER_MMC_ERROR(2),			///<回调函数未设置
	kHccDrvPerMmcExist	=	HCC_MAKE_DRV_PER_MMC_ERROR(3),			///<芯片不存在(没有使用)
	kHccDrvPerMmcSupport	=	HCC_MAKE_DRV_PER_MMC_ERROR(4),			///<不支持的芯片
	kHccDrvPerMmcPending	=	HCC_MAKE_DRV_PER_MMC_ERROR(5),			///<写入/擦除/等待就绪等进行中
	kHccDrvPerMmcFail	=	HCC_MAKE_DRV_PER_MMC_ERROR(6),			///<写入/擦除失败(没有使用)
	kHccDrvPerMmcOpened	=	HCC_MAKE_DRV_PER_MMC_ERROR(7),			///<设备已打开
	kHccDrvPerMmcClosed	=	HCC_MAKE_DRV_PER_MMC_ERROR(8),			///<设备未打开(已关闭)
	kHccDrvPerMmcNoResponse	=	HCC_MAKE_DRV_PER_MMC_ERROR(9),			///<芯片未响应
	kHccDrvPerMmcBusy	=	HCC_MAKE_DRV_PER_MMC_ERROR(10),			///<芯片忙
	kHccDrvPerMmcInvalidResponse	=	HCC_MAKE_DRV_PER_MMC_ERROR(11),			///<无效的响应
	kHccDrvPerMmcIllegalCmd	=	HCC_MAKE_DRV_PER_MMC_ERROR(12),			///<无效的命令
	kHccDrvPerMmcCrcError	=	HCC_MAKE_DRV_PER_MMC_ERROR(13),			///<Crc错误
	kHccDrvPerMmcInvalidCard	=	HCC_MAKE_DRV_PER_MMC_ERROR(14),			///<无效芯片
	kHccDrvPerMmcInitTimeout	=	HCC_MAKE_DRV_PER_MMC_ERROR(15),			///<等待芯片初始化完成超时
	kHccDrvPerMmcOfsMisAlign	=	HCC_MAKE_DRV_PER_MMC_ERROR(16),			///<擦除操作的offset未按扇区对齐
	kHccDrvPerMmcDataRejectDueWriteError	=	HCC_MAKE_DRV_PER_MMC_ERROR(17),			///<写入操作时,由于写入错误导致数据被拒收
	kHccDrvPerMmcCallSeq	=	HCC_MAKE_DRV_PER_MMC_ERROR(18),			///<函数的调用顺序不对
};
typedef enum THccDrvPerMmcTag THccDrvPerMmc;


typedef Int32 THccDrvPerMmcLine;
#define kHccDrvPerMmcSuccessLine	HCC_ERROR_SUCCESS	///< 成功,没有错误
#define kHccDrvPerMmcCommLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(0)	///<通讯错误
#define kHccDrvPerMmcParamLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(1)	///<参数错误
#define kHccDrvPerMmcCallBackLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(2)	///<回调函数未设置
#define kHccDrvPerMmcExistLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(3)	///<芯片不存在(没有使用)
#define kHccDrvPerMmcSupportLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(4)	///<不支持的芯片
#define kHccDrvPerMmcPendingLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(5)	///<写入/擦除/等待就绪等进行中
#define kHccDrvPerMmcFailLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(6)	///<写入/擦除失败(没有使用)
#define kHccDrvPerMmcOpenedLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(7)	///<设备已打开
#define kHccDrvPerMmcClosedLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(8)	///<设备未打开(已关闭)
#define kHccDrvPerMmcNoResponseLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(9)	///<芯片未响应
#define kHccDrvPerMmcBusyLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(10)	///<芯片忙
#define kHccDrvPerMmcInvalidResponseLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(11)	///<无效的响应
#define kHccDrvPerMmcIllegalCmdLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(12)	///<无效的命令
#define kHccDrvPerMmcCrcErrorLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(13)	///<Crc错误
#define kHccDrvPerMmcInvalidCardLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(14)	///<无效芯片
#define kHccDrvPerMmcInitTimeoutLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(15)	///<等待芯片初始化完成超时
#define kHccDrvPerMmcOfsMisAlignLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(16)	///<擦除操作的offset未按扇区对齐
#define kHccDrvPerMmcDataRejectDueWriteErrorLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(17)	///<写入操作时,由于写入错误导致数据被拒收
#define kHccDrvPerMmcCallSeqLine	HCC_MAKE_DRV_PER_MMC_ERROR_LINE(18)	///<函数的调用顺序不对

//旧版本适配补丁
typedef THccDrvPerMmc TPerMmcErrorCode;

#define kPerMmcErrorCodeSuccess kHccDrvPerMmcSuccess
#define kPerMmcErrorCodeComm kHccDrvPerMmcComm
#define kPerMmcErrorCodeParam kHccDrvPerMmcParam
#define kPerMmcErrorCodeCallBack kHccDrvPerMmcCallBack
#define kPerMmcErrorCodeExist kHccDrvPerMmcExist
#define kPerMmcErrorCodeSupport kHccDrvPerMmcSupport
#define kPerMmcErrorCodePending kHccDrvPerMmcPending
#define kPerMmcErrorCodeFail kHccDrvPerMmcFail
#define kPerMmcErrorCodeOpened kHccDrvPerMmcOpened
#define kPerMmcErrorCodeClosed kHccDrvPerMmcClosed
#define kPerMmcErrorCodeNoResponse kHccDrvPerMmcNoResponse
#define kPerMmcErrorCodeBusy kHccDrvPerMmcBusy
#define kPerMmcErrorCodeInvalidResponse kHccDrvPerMmcInvalidResponse
#define kPerMmcErrorCodeIllegalCmd kHccDrvPerMmcIllegalCmd
#define kPerMmcErrorCodeCrcError kHccDrvPerMmcCrcError
#define kPerMmcErrorCodeInvalidCard kHccDrvPerMmcInvalidCard
#define kPerMmcErrorCodeInitTimeout kHccDrvPerMmcInitTimeout
#define kPerMmcErrorCodeOfsMisAlign kHccDrvPerMmcOfsMisAlign
#define kPerMmcErrorCodeDataRejectDueWriteError kHccDrvPerMmcDataRejectDueWriteError
#define kPerMmcErrorCodeCallSeq kHccDrvPerMmcCallSeq

#ifdef __cplusplus
}  // extern "C"
#endif

#endif // _HCC_ERROR_CODE_DRV_PER_MMC_H_
/**
 * @
 */
